Go toolchain
Goプログラミング言語でのソフトウェア開発を支援する一連のツールやコンポーネント
goコンパイラ
クロスコンパイル
go command
go build
go run
go test
go mod
go modules
標準ライブラリ
gabage collection
Go 1.21以降は実行マシンに入っているGoバージョンと、Goアプリケーションのgo.modのgo directiveのバージョンが異なるときに、goが使用するツールチェインのバージョンを選択してくれる
ローカルPCのGoバージョンがgo.modに記載されたバージョン以上の場合
→ ローカルPCのGoバージョンのツールチェインが使用される(後方互換性が保証されているため)。
ローカルPCのGoバージョンがgo.modに記載されたバージョンより古い場合
→ エラーになるか、または必要に応じて新しいバージョンのツールチェインがダウンロードされる(自動切り替えが有効であれば)
Go 1.21以降では、go.modのgo directive記載のgoバージョンがminimumバージョンという認識でOK
GOTOOLCHAINの環境変数で制御できる
defaultだとautoという値になっている
ローカルのバージョンがgo.mod記載のバージョンより古い時の自動切り替えがONになっている
GOTOOLCHAIN=go1.21rc3
強制的にgo1.21rc3のツールチェインで実行する
GoのバージョンとGo toolchainのバージョンの違い
Goのバージョン
言語仕様、標準ライブラリ、ランタイムのバージョン
Go toolchainのバージョン
Go言語での開発に使用されるツール群(コンパイラやビルドツール、テストツールなど)の特定のバージョン